/*
 *
函数指针：
1. 函数指针用来存放函数的地址，这个地址是一个函数的入口地址。
2. 函数名代表了函数的入口地址。
3. 函数指针变量说明的一般形式如下：
<数据类型> （*<函数指针名称>）(<参数说明列表>)；
<数据类型>是函数指针所指向的函数的返回值的类型
<函数说明列表>应该与函数指针所指向的函数的形参说明保持一致
(*<函数指针名称>)中，*说明为指针，()不可缺省，表明为函数的指针。（不加括号的话，就成了指针函数）。


0x564bc9a97149
0x564bc9a97149
hello world 100
hello world 100
hello world 100

 */

#include<stdio.h>

void print_hello(int a){
	printf("hello world %d\n",a);
}

int main(){
	void (*p)(int);
	p = print_hello;

	printf("%p\n",print_hello);
	printf("%p\n",p);

	print_hello(100);
	p(100);
	/*
	函数指针前面加 * 和不加 * 的效果是完全一样的，因为编译器会自动解引用函数指针。
	加 * 的场景可以用来提高代码的可读性或强调函数指针的特性，特别是在复杂声明中。
	*/
	(*p)(100);

	return 0;
}
